const app = getApp();
let userInfo = app.globalData.userInfo;
const db = wx.cloud.database();
// 输入的文字内容
let content = '';
// 最大的选择图片的数量 
const MAX_IMAGE_NUM = 9;
// 文本域输入文字最大的个数
const MAX_WORDS_NUM = 200;
// pages/news-edit/news-edit.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 输入的文字个数
    wordsNum: 0,
    footerBottom: 0,
    images: [],
    selectPhoto: true, //添加图片的元素是否显示
    sendNewsAd:null
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function () {
    this.setData({
      sendNewsAd:app.globalData.ads.sendNewsAd
    })
     userInfo = wx.getStorageSync('user')
  },

  // 监听输入框输入事件
  onInput(e) {
    let wordsNum = e.detail.value.length
    if (wordsNum >= MAX_WORDS_NUM) {
      wordsNum = `最大字数为${MAX_WORDS_NUM}`
    }
    this.setData({
      wordsNum
    })
    content = e.detail.value
  },
  // 获取焦点
  onFocs(e) {
    // 模拟器获取的键盘高度为0
    // 真机测试获取到的键盘高度333
    // console.log(e,'获取焦点')
    this.setData({
      footerBottom: e.detail.height
    })

  },
  // 失去焦点
  onBlur(e) {
    // console.log(e,'失去焦点')
    this.setData({
      footerBottom: 0
    })

  },
  // 选择图片
  onChooseImage() {
    // 还可以再选择几张图片
    let max = MAX_IMAGE_NUM - this.data.images.length
    wx.chooseImage({
      count: max,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success: res => {
        // tempFilePath可以作为img标签的src属性显示图片
        // const tempFilePaths = res.tempFilePaths
        this.setData({
          images: this.data.images.concat(res.tempFilePaths)
        })
        // 表示选择完以后还可以再选择几张图片
        max = MAX_IMAGE_NUM - this.data.images.length
        this.setData({
          selectPhoto: max <= 0 ? false : true
        })
      }
    })
  },
  // 删除图片
  onDelImage(e) {
    this.data.images.splice(e.currentTarget.dataset.index, 1)
    this.setData({
      images: this.data.images
    })
    if (this.data.images.length == MAX_IMAGE_NUM - 1) {
      this.setData({
        selectPhoto: true
      })
    }
  },
  // 放大显示图片
  onPreviewImage(e) {
    wx.previewImage({
      urls: this.data.images,
      current: e.target.dataset.imagesrc
    })

  },
  // 发 布
  send() {
    // 数据存储到数据库
    // 数据库:内容，图片fileID ，用户openid,昵称，头像，时间
    //  1.图片：上传到云存储 返回fileid 云文件ID

    // 判断用户输入的内容  content.trim()去掉空格
    if (content.trim() === '') {
      wx.showModal({
        cancelColor: 'cancelColor',
        title: '请输入文字内容',
        content: ''
      })
      return
    }

    wx.showLoading({
      title: '发布中',
      mask: true
    })

    let promiseArr = []
    let fileIds = []
    // 图片上传
    for (let i = 0, len = this.data.images.length; i < len; i++) {
      let p = new Promise((resolve, reject) => {

        let item = this.data.images[i]

        // 文件扩展名
        let suffix = /\.\w+$/.exec(item)[0]

        wx.cloud.uploadFile({
            cloudPath: 'news/' + Date.now() + '-' + Math.random() * 10000000 + suffix,
            filePath: item,
          })
          .then(res => {
            // console.log(res, '上传图片成功回调')
            fileIds = fileIds.concat(res.fileID)
            resolve()
          })
          .catch(err => {
            console.log(err, '上传图片失败回调')
            reject()
          })

      })
      promiseArr.push(p)
    }
    // 存入到云数据库
    Promise.all(promiseArr).then(res => {
      db.collection('news').add({
          data: {
            ...userInfo,
            content,
            img: fileIds,
            createTime: db.serverDate(), //服务器端的时间
          }
        })
        .then(res => {
          wx.hideLoading()
          wx.showToast({
            title: '发布成功',
          })

          // 返回news页面，并且刷新
          wx.navigateBack()
          const pages = getCurrentPages()
          // 取到上一个页面
          const prevPage = pages[pages.length - 2]

          // 调用父界面的下拉触底刷新数据方法
          prevPage.onPullDownRefresh()


        })
        .catch(err => {
          wx.hideLoading()
          wx.showToast({
            title: '发布失败',
          })
        })
    })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },
  adLoad() {
    console.log('Banner 广告加载成功')
  },
  adError(err) {
    console.log('Banner 广告加载失败', err)
  },
  adClose() {
    console.log('Banner 广告关闭')
  }
})